#!/usr/bin/env bash

# =========================== 可自定义参数 ===========================
# 集群master的数量
export MASTER=3

# 集群主机IP
#export MASTER_IP="192.168.134.133 192.168.134.134 192.168.134.135"
export MASTER_IP="192.168.1.196 192.168.1.119 192.168.1.156"


# 集群主机主机名
export MASTER_HOSTNAME="k8s-master-1 k8s-master-2 k8s-master-3"

# 集群主机密码
#export MASTER_PASS="zhujingzhi zhujingzhi zhujingzhi"
export MASTER_PASS="tuitui99 tuitui99 tuitui99"

# 各组件数据存放目录( 数据文件(data) 配置文件(config) yml文件(yml) )
export K8S_DATA="/data/k8s"

# 各组件CA证书及证书所需文件目录
export K8S_CA_DIR="/etc/kubernetes/ssl"

# k8s主目录
export K8S_BIN_DIR="/opt/k8s/bin"

# keepalive目录
export KEEPALIVED_BIN_DIR="/etc/keepalived"

# haproxy目录
export HAPROXY_BIN_DIR="/etc/haproxy"

# k8s使用的日志目录
export K8S_LOGS_DIR="/var/k8s/logs"

# flannel 节点间使用的借口名称
#export FLANNEL_INTERFACE="ens34"
export FLANNEL_INTERFACE="ens160"

# 集群node数量
export NODE=2

# 集群node节点IP
#export NODE_IP="192.168.134.136 192.168.134.137"
export NODE_IP="192.168.1.123 192.168.1.154"


# 集群node节点主机名
export NODE_HOSTNAME="k8s-node-1 k8s-node-2"

# 集群node节点密码
#export NODE_PASS="zhujingzhi zhujingzhi"
export NODE_PASS="tuitui99 tuitui99"

# vip 使用的接口名称
#export VIP_INTERFACE="ens34"
export VIP_INTERFACE="ens160"

# keepalive 或者 apiserver  vip
#export APISERVER_VIP="192.168.134.240"
export APISERVER_VIP="192.168.1.240"

# keepalive 或者 apiserver 端口
export APISERVER_VIP_PORT="6444"

# haproxy 用户名
export HAPROXY_NAME="admin"

# haproxy 密码
#export HAPROXY_PASS="zhujingzhi"
export HAPROXY_PASS="tuitui99"

# haproxy 端口
export HAPROXY_STATUS_PORT="8000"


# =========================== 不需改变参数 ===========================
# 生成 EncryptionConfig 所需的加密 key
export ENCRYPTION_KEY=$(head -c 32 /dev/urandom | base64)

# TLS Bootstrapping 使用的 Token，可以使用命令 head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成
export BOOTSTRAP_TOKEN="cef94b115a0a803dbe7be9f39e89889f"

# service网段，部署前路由不可达，部署后集群内路由可达(kube-proxy 保证)
export SERVICE_CIDR="10.254.0.0/16"

# Pod 网段，建议 /16 段地址，部署前路由不可达，部署后集群内路由可达(flanneld 保证)
export CLUSTER_CIDR="172.30.0.0/16"

# 服务端口范围 (NodePort Range)
export NODE_PORT_RANGE="30000-32767"

# flanneld 网络配置前缀
export FLANNEL_ETCD_PREFIX="/kubernetes/network"

# kubernetes 服务 IP (一般是 SERVICE_CIDR 中第一个IP)
export CLUSTER_KUBERNETES_SVC_IP="10.254.0.1"

# 集群 DNS 服务 IP (从 SERVICE_CIDR 中预分配)
export CLUSTER_DNS_SVC_IP="10.254.0.2"

# 集群 DNS 域名（末尾不带点号）
export CLUSTER_DNS_DOMAIN="cluster.local"

# 将二进制目录 /opt/k8s/bin 加到 PATH 中
export PATH=${K8S_BIN_DIR}:$PATH

# APISERVER 通信地址
export APISERVER="https://${APISERVER_VIP}:${APISERVER_VIP_PORT}"

# 生成 etcd address
i=0
for etcd_ip in ${MASTER_IP}
do
let i++
    echo -e "`echo ${MASTER_HOSTNAME} | cut -d " " -f $i`=https://${etcd_ip}:2380,\c" >> ./work/etcd-ip-communication.txt
    echo -e "https://${etcd_ip}:2379,\c" >> ./work/etcd-ip.txt
done

# etcd 地址
export ETCD_NODES=`sed 's/.$//' ./work/etcd-ip.txt`

# etcd 通信地址
export ETCD_ENDPOINT=`sed 's/.$//' ./work/etcd-ip-communication.txt`

rm -rf ./work/etcd-ip.txt ./work/etcd-ip-communication.txt 